WITH Bulletin.Fonctionalites;
WITH Bulletin.composants;
WITH Resumer;
WITH Etudiant.IO;

PACKAGE BODY Etudiant.Fonctionalites IS

   PROCEDURE CreerBulletin(unEtu : IN OUT Etudiant) IS
   BEGIN
     Bulletin.Fonctionalites.CreerBulletin(unBull => unEtu.un_bulletin);
   END CreerBulletin;


   PROCEDURE AfficheSituation(unEtu : IN OUT Etudiant) IS
   BEGIN
      io.Put(unEtu);
      Resumer(unEtu.un_bulletin);
   END AfficheSituation;


   PROCEDURE ClasserBulletin (unEtu : IN OUT Etudiant) IS
   BEGIN
      Bulletin.Fonctionalites.Classer(unEtu.un_bulletin);
   END ClasserBulletin;


   PROCEDURE AjoutMatiereBulletin (unEtu : IN OUT Etudiant) IS
   BEGIN
      unEtu.un_bulletin := Bulletin.Fonctionalites.EnregIStrer(unEtu.un_bulletin);
   END AjoutMatiereBulletin;


   PROCEDURE RetirerMatiereBulletin (unEtu : IN OUT Etudiant) IS
   BEGIN
      unEtu.un_bulletin := Bulletin.Fonctionalites.Retirer(unEtu.un_bulletin);
   END RetirerMatiereBulletin;


   PROCEDURE PondererMatiere (unEtu : IN OUT Etudiant) IS
   BEGIN
     Bulletin.Fonctionalites.PondererMatiere(un_bull => unEtu.un_bulletin);
   END PondererMatiere;


   PROCEDURE ModIFierNoteMatiere (unEtu : IN OUT Etudiant) IS
   BEGIN
      Bulletin.Fonctionalites.ModIFierNoteMatiere(un_bull => unEtu.un_bulletin);
   END ModIFierNoteMatiere;


   PROCEDURE FixerObjectIFBulletin (unEtu : IN OUT Etudiant) IS
   BEGIN
      Bulletin.Fonctionalites.VISer(unEtu.un_bulletin);
   END FixerObjectIFBulletin;


   FUNCTION GetNombreMatieres (unEtu : Etudiant) return Natural IS
   BEGIN
      return Bulletin.composants.GetT_Matieres(unEtu.un_bulletin)'Length;
   END GetNombreMatieres;


END etudiant.fonctionalites;
